As the popularity of the internet and the functionality of websites continue to grow, many websites require multiple servers to handle the load of communications traffic directed toward their pages. In another use of the internet, Voice over Internet Protocol service has grown to a volume where many servers are required to handle the demand for a given service provider. As the requirement for multi-server systems evolves, a need arises for the ability to balance the load generated for the service across the number of deployed servers providing the service.
Further, the desire to handle the signaling of telecommunications over Internet Protocol (IP) and the growth in complexity of websites with regard to providing a rich multimedia experience combined with reliable and responsive communications has led to the development of communication protocols such as Stream Control Transmission Protocol (SCTP). SCTP provides a connection-oriented protocol, similar to Transmission Control Protocol (TCP), on top of the connectionless IP and includes the additional features of multi-homing and multi-streaming that are not available with TCP. These additional features allow a more efficient communication between a multitude of clients and servers.
A load-balancing system for multiple servers is desired that provides the features of SCTP but with one or more of: 1) no modifications to the SCTP protocol; 2) minimize the amount of SCTP chunk inspection; 3) minimize association state storing; 4) minimize SCTP checksum recalculation; 5) no modifications to the IP header; 6) support the SCTP multi-homing feature; 7) transparent to users of the socket Application Programming Interface (API); and 8) no modifications to the server IP communications stack. A number of attempts, based on a Network Address Translation (NAT) scheme, to provide a solution have been attempted but these solutions typically do not meet some or all of the characteristics specified above.
Consequently, market pressure is building for a load-balancing capable system which would meet the characteristics specified above and would also allow, among other things, the ability to scale the system capacity as required without interference with the currently operating servers or the applications and associations running on the operating servers.